<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作业</title>
    <script>

// 1.递归练习
// 有一堆桃子不知数目，猴子第一天吃掉一半，觉得不过瘾，又多吃了一只，第二天照此办法，吃掉剩下桃子的一半另加一只，
// 天天如此，到第num(num <= 10)天早上，猴子发现只剩一只桃子了，
// 问这堆桃子原来有多少只？ （思路：n为还剩n天吃完的桃子数）
// 2.生成13位条形码(对之前的知识综合练习)
//     Ean-13码规则：第十三位数字是前十二位数字经过计算得到的校验码。
// 例如：690123456789
// 第三位计算其校验码的过程为：
// @前十二位的奇数位和6+0+2+4+6+8=26
// @前十二位的偶数位和9+1+3+5+7+9=34
// @将奇数和与偶数和的三倍相加26+34*3=128
// @取结果的个位数：128的个位数为8
// @用10减去这个个位数10-8=2
// 所以校验码为2（注：如果取结果的个位数为0，那么校验码不是（10-0=10），而是0）实现方法ean13（）计算验证码，
// 输入12位条码，返回带验证码的条码。
// 例如：输入：692223361219输出：6922233612192
// 编写函数实现.
// 3.翻转数组：将数组的内容反过来存放 翻转数组.(自己编写函数实现类似reverse()函数效果).
// 4.先预习冒泡排序 选择排序 快速排序的递归函数实现.



        /*
            f(10)=1 //剩余1天
            f(9)=(f(10)+1)*2 //剩余2天
            
            f(n)=(f(n-1)+1)*2 //剩余的天数
        */
        function sum(n){
            if(n==1){//剩余一天 实际上第十天
                return 1;
            }
            return (sum(n-1)+1)*2; //n是剩余10天 其实就是开始吃第一天的数量
        }
        //alert(sum(3)); //10  

        //692223361219
        function ean13(num){
           //var re=String(num).split("");
           var numArr=[];
           while(num){
               var weiNum=(num%10);// 個 十  百  千 万   .. 万千百十个
               numArr.unshift(weiNum);//往数组头部添加数据
               num=parseInt(num/10);// 213 213%10=3 parseInt(213/10)%10=1 parseInt(213/10/10)%10=2 parseInt(213/10/10/10)=0
           }
           var odd=0;//奇数和
           var even=0;//偶数和
           for(var i=0;i<numArr.length;i++){
               if(i%2==0){//数组里面的偶数下标其实是奇数位
                    odd+=numArr[i];
               }else{
                   even+=numArr[i];
               }
           }
           var ge=(odd+(even*3))%10;
           var sign= ge==0 ? 0: 10-ge;// 如果得到余数等于 结果0 否则 10-个位数
           numArr.push(sign); //把得到标记位加入数组最后面
           return  Number(numArr.join(''));//把数组转化为字符串 转化Number
        }
        //alert(ean13(692223361219));
        var arr=[ 15, 12, 10, 5 ];
        function reverse(arr){
            //var newArr=[];
            // for(var i=arr.length-1;i>=0;i--){
            //     newArr[newArr.length]=arr[i];
            // }
            // for(var i=0;i<arr.length;i++){
                //var sub=arr.length-1-i;//取到倒数位的下标
                //newArr[newArr.length]=arr[sub];
                //newArr.unshift(arr[i]);//unshift 添加数据到数组头部.
            // }
            // while(arr.length){
            //      newArr.unshift(arr.shift())
            // }

            // var len=arr.length;
            // for(var i=0;i<parseInt(len/2);i++){
            //     var last=len-i-1;
            //     var tmp=arr[i];//交换位置 倒数第一个和 正数第一个交换位置 倒数第二个和 正数第二个交换位置
            //         arr[i]=arr[last];
            //         arr[last]=tmp;
            // }    
            // return arr;
        }
        //alert(reverse(arr));


    </script>
</head>
<body>
    
</body>
</html>